package Reentrantlock;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.*;

class Ticket {
    private int count = 3; // 售卖总票数
    private Lock lock = new ReentrantLock(); // 互斥锁

    public void sale() {
        this.lock.lock(); // 加锁
        try {
            if (this.count > 0) {
                TimeUnit.SECONDS.sleep(1); // 模拟延迟
                System.out.println(" [" + Thread.currentThread().getName() +
                        "] 卖票，剩余票数：" + this.count--);
            } else {
                System.err.println(" [" + Thread.currentThread().getName() +
                        "] 票已卖完了，明天再来！");
            }
        } catch (Exception e) {
        } finally {
            this.lock.unlock(); // 解除锁定
        }
    }
}



















































// 程序执行结果：
// [售票员 - 1] 卖票，剩余票数：3
// [售票员 - 2] 卖票，剩余票数：2
// [售票员 - 3] 卖票，剩余票数：1
